perl脚本语言学习1 | 您所在的位置:网站首页 › makefile 执行shell脚本 › perl脚本语言学习1 |
文章目录
前言一、perl语言介绍二、perl变量1、标量 scalar1.1 数字1.2 字符串1.2.1 字符串操作符1.2.2 字符串函数
2、数组 array2.1 数组函数
3、哈希数组 hash3.1 数据拷贝3.2 地址拷贝3、哈希数组函数
三、控制流语句1、if2、while3、for4、foreach5、循环退出
四、输入输出1、键盘输入和显示屏输出2、读写文件2.1 打开文件2.2 移动读写指针2.3 读取文件内容2.4 写文件2.5 设当读写文件格式2.6 使用范例
五、函数练习题1、perl脚本统计网表中cell类型和个数2、回归测试脚本
前言
2023.3.18 今天下载虚拟机把电脑磁盘内容弄到乱七八糟,难受 发现每次学习遇到一个坎,感觉面前是一座大山,越过去之后又对前途充满了希望 一、perl语言介绍perl:practical extraction report language 实用提取和报表语言 从字面上看主要与文本处理相关 二、perl变量变量定义关键词:my 1、标量 scalar存储数字、字符、字符串,以$符号开头,一般不会特别在意是字符串、浮点数还是整数 my $money = 100000; my $name = xxx; my $old_year = $year; //标量直接赋值给一个标量 1.1 数字0377 八进制,以 0 开头 0xFF 十六进制,以 0x 开头 0b0000_1001 二进制,以 0b 开头 1.2 字符串字符串用单引号或双引号括起来。 单引号内不作转义,而双引号内转义。 双引号字符串内可以内插其它标量,意单引号字符串中的$仅表示美元符,不会内插。 "hello \n" ---->hello 加回车 'hello \n' ---->hello \n 直接输出 'a\'b' ---->a'b 单引号内用'符号,要加转义符 my $a = "abc"; my $b = "def$a"; ---->$b = defabc my $b = 'def$a'; ---->$b = def$a 1.2.1 字符串操作符.:拼接操作符,"verdi" . "2016" "#" x 40 :表示#重复 40 次 "-" x (40+5) :表示-重复 45 次 1.2.2 字符串函数index(string,substring,skipchars):返回子串 substring 在字符串 string 中的位置 rindex(string,substring,skipchars):功能与 index()类似,不同的是它从 string 的右端开始查找 length(string):求字符串的长度 lc(string):把 string 中的所有字母都转换成小写字母 uc(string):把 string 中的所有字母都转换成大写字母 lcfirst(string):把 string 中的第一个字母转换成小写字母 ucfirst(string):把 string 中的第一个字母转换成大写字母 substr(string,skipchars,length):该函数在字符串 string 中跳过 skipchars 个字符的位置(从skipchars 位置处)开始抽取长度为 length 的子串。第一个字符的位置为 0 join(sepatorstring,list):把列表 list 中的所有元素串联到同一个字符串中,相邻两个元素之间使用 sepatorstring 分隔 sprintf(formatstring,field1,field2,...,fieldn):对字符串进行格式化,功能同 C 语言中的 sprintf()函数,不同的是该函数返回格式化后的结果字符串,就是有返回值 2、数组 array定义:同一类标量的组合,以@符号开头 数组定义的同时就初始化 my @testcases = ("case0", "case1"); my @filelist = (); $testcases[0] //引用数组的第一个元素,下标从0开始 my @array = (); $array[0] = "0"; $array[99] = "99"; //1-98的元素值为undef $#array //数组最后一个元素的索引值,比元素个数少1,例如上面例子就是99 my $array_size = $#array + 1; //求出数组array的大小 2.1 数组函数push:末尾增加一个元素 pop:取出数组末尾的元素 shift:取出数组开头的元素 unshfit:开头增加一个元素 sort:对数组排序 foreach:遍历 foreach my $e (@array){ print "$e \n" } //依次换行输出数组里面的内容 3、哈希数组 hash定义:又称关联数组,以%符号开头,类似用字符串来索引的数组,像python的字典和sv中的关联数组。 3.1 数据拷贝键Key => 值Value my %dict = ("book" >= "UVM", "people" >= "xiaoli"); $dict{"book"} //引用哈希数组索引book所对应的值 my $define_a_book = $dict{"book"}; //把book对应的值赋值给其他标量 3.2 地址拷贝在 C++里是&符号,在 Perl 里是\符号 my $arr_ref = \@arrs; //得到数组地址给一个标量 my $hash_ref = \%hashs;可以用@和%根据地址恢复出实际数组和哈希,也就是根据地址把数组和哈希数组的值重新赋值给一个新的数组和哈希数组tmp。 my @tmp = @$arr_ref; my %tmp = %$hash_ref; 3、哈希数组函数keys:返回所有关键字构成的数组 values:返回所有值构成的数组 exists :确定某个键 Key 是否存在 delete:用来删除某个键和值 my @mykey = keys %food; my @myvalue = values %food; foreach my $key (keys %food){ print "$key: $mykey{$key}\n"; //一一对应输出哈希数组的内容 } if(exsits $food{'apple'}){ ... } delete $food{'apple'}; %food = (); //删除所有,只需要把它赋值为空哈希 三、控制流语句 1、ifif… if…else… if…elsif…else… 即使{}中的statement语句只有一条,{}也不能省略。当只有一条时也有一种简写方式。 if($cell_cnt > 0){ print "$cell_cnt"; } statement if (); print "$cell_cnt" if($cell_cnt > 0); 2、whilewhile( ){ }:先判断后执行 do{ } while():先执行后判断 my $i = 10; while($i > 0){ print "$i"; $i--; } //输出10 9 8 .. 1 do{ print "$i"; $i--; }while($i > 0); 3、forfor(initialization; test; increment){ } for(my $i = 0; $i if($i == 5)last; print "$i "; } //0 1 2 3 4 for(my $i = 0; $i $line .= $_; }2、使用FIN,一次性读取整个文件 $/:输入记录分隔符,默认是回车符\n,尖括号就是通过识别回车符读入一行。可以对其进行修改,但是建议是局部修改local,以免对其他地方产生影响。下面的代码将其局部定义为未定义的变量,所以$file变量就会一次性读取所有内容,因为没有分隔符了。 open(FIN, " |
CopyRight 2018-2019 实验室设备网 版权所有 |